package com.anyfo.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

public interface ICommonDao {
	/**
	 * 通过ID获取持久化对象
	 * @param c	
	 * 			持久化对象类型
	 * @param id	
	 * 			查询ID
	 */
	public Object get(Class c,String id);
	
	public boolean saveOrUpdate(Object o);

	/** 
	  * 保存（持久化）一个对象 
	  * 
	  * @param object 
	  *            要保存的对象 
	  */ 

	public boolean add(Object o);

	/** 
	  * 删除一个对象 
	  * 
	  * @param object 
	  *            要删除的对象 
	  */ 

	public boolean del(Object o);
		
	/** 
	  * 更新一个对象 
	  * 
	  * @param object 
	  *            要修改的对象 
	  */ 
	
	public boolean update(Object o);
	
	/** 
	  * 判断一个对象 是否存在
	  * 
	  * @param object 
	  *            要判断的对象 
	  */ 
	public boolean isExist(String hql);
	
	/** 
	  * 使用HQL语句查询
	  * 
	  * @param String 
	  *           HQL语句 
	  */ 
	public List<Object> useHQL(String hql);
	
	/**
	 * 使用HQL语句分页查询
	 * 
	 * @param hql	HQL语句
	 * @param pageSize	每页记录数
	 * @param start		开始位置
	 * @return
	 */
	public List<Object> usePagingHql(String hql,Integer pageSize,Integer start);
	
	/**  
     * 插入增加的方法  
     * @param entityTable 要操作的表的名称  
     * @param propertys 操作的表的属性名称  
     * @param params 增加的值  
     * @return 成功与否  
	 * @throws SQLException 
     * @throws SQLException  
     */  
	public boolean addByJDBC(String entityTable,String []propertys,Object[]params) throws SQLException;
	
	
	/**  
     * 更新修改的方法  
     * @param entityTable 实体表名称  
     * @param propertys 更新的字段名称  
     * @param params 更新的值  
     * @param sqlWhere 条件语句  
     * @return 返回成功与否  
	 * @throws SQLException 
     * @throws SQLException  
     */  
	public boolean updateByJDBC(String entityTable,String []propertys,Object[]params,String sqlWhere) throws SQLException;
	
	/**  
     * 查询方法  
     * @param entityTable 要操作的表的名称  
     * @param propertys 表中所还有的属性，字段的名称,也就是主要关心的字段的名称  
     * @param sqlWhere 是附加的查询条件，可以含有where 关键字，也可以不含有where关键字均可  
     * @return 查到的ResultSet结果集  
	 * @throws SQLException 
     * @throws SQLException  
     */  
	public ResultSet  queryByJDBC(String entityTable,Object []propertys,String sqlWhere) throws SQLException;
	
	/**  
     * 删除操作  
     * @param entityTable  
     * @param objectId  
     * @return  
	 * @throws SQLException 
     * @throws SQLException  
     */  
	public boolean delByJDBC (String entityTable,String sqlWhere) throws SQLException;


}
